﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Itegracion.Framework.Forms;

namespace Itegracion.iAlmacen.Forms
{
    public partial class fmCatalogo : fmSeleccion
    {   
        public fmCatalogo()
        {
            InitializeComponent();
            Titulo = "Productos";
            Subtitulo = "Catalogo de Producto";
            ensamblado = "Itegracion.iAlmacen";
            clase = "Producto";
            listado.KeyUp += new KeyEventHandler(listado_KeyUp);
            dgvPrecios.KeyDown += new KeyEventHandler(detalle_KeyDown);
            dgvExistencia.KeyDown+=new KeyEventHandler(detalle_KeyDown);
        }
        #region Propiedades
        public int IdUnidad {
            get {
                return Convert.ToInt32(dgvPrecios.Rows[dgvPrecios.SelectedCells[0].RowIndex].Cells[1].Value);
            }
        }
        public int IdProducto {
            get {
                return Convert.ToInt32(Fila["id"]);
            }
        }
        public string Codigo
        {
            get
            {
                return Fila["codigo"] + "";
            }
        }
        public string Producto
        {
            get
            {
                return Convert.ToString(Fila["nombre"]);
            }
        }
        public decimal PrecioUnitario
        {
            get
            {
                return Convert.ToDecimal(dgvPrecios.SelectedCells[0].Value);
            }
        }
        public int IdMarca
        {
            get
            {
                return Convert.ToInt32(Fila["idMarca"]);
            }
        }
        public int IdFamilia
        {
            get
            {
                return Convert.ToInt32(Fila["idFamilia"]);
            }
        }
        public string NroLote {
            get {
                if (dgvExistencia.SelectedCells.Count > 0)
                    return dgvExistencia.Rows[dgvExistencia.SelectedCells[0].RowIndex].Cells[6].Value + "";
                else
                    return null;
            }
        }
        public string Vencimiento
        {
            get
            {
                if (dgvExistencia.SelectedCells.Count > 0)
                    return dgvExistencia.Rows[dgvExistencia.SelectedCells[0].RowIndex].Cells[5].Value + "";
                else
                    return "";
            }
        }
        public bool TieneStock
        {
            get
            {
                bool rpta = false;
                foreach (DataGridViewRow item in dgvExistencia.Rows)
	            {
		            rpta |= Convert.ToDecimal(item.Cells[3].Value) > 0;
	            }
                return rpta;
            }
        }
        #endregion

        #region Metodos
        protected override void OnAddFields(DataGridView listado, ref ucEdicion propiedades)
        {
            listado
                .AddTextBoxColumn("ID", 50)
                .AddTextBoxColumn("Codigo", 80)
                .AddTextBoxColumn("Nombre", 200)
                .AddTextBoxColumn("Marca", 100);
            propiedades = new ucProducto();
        }
        protected override void OnLoadData(DataGridView listado)
        {
            _("Itegracion.Framework", "Constante", "TraerComboAbreviado", new Element("tipo", "Unidad"))
                .Out(new List<object>() { eUnidad, pUnidad });
            _("Itegracion.iAlmacen", "Persona", "TraerCombo", new Element("tipo", 3))
                .Out(eAlmacen);
            _("TraerListado")
                .Out(listado);
        }
        public override void OnNavigate(string id, DataGridViewCell cell)
        {
            _("Navegar", cell)
                .Out(dgvPrecios, dgvExistencia);
        }
        #endregion
        #region Eventos
        void listado_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Tab)
                dgvPrecios.Focus();
        }
        private void dgvPrecios_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Tab)
            {
                dgvExistencia.Focus();
            }
            if (e.KeyCode == Keys.Enter)
            {
                Seleccionar();
            }
        }
        private void dgvExistencia_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Tab)
            {
                listado.Focus();
            }
            if (e.KeyCode == Keys.Enter)
            {
                Seleccionar();
            }
        }
        void detalle_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Tab)
                e.SuppressKeyPress = true;
        }
        #endregion
    }
}
